From 6420dd934fafb770d7fdccadb86bd01dd6fc710c Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 18 Sep 2017 10:55:36 -0400 Subject: [PATCH] Add an auxiliary ident parsing function This lets us conveniently create ident values from multiple candidates. --- gtk/gtkcssstringvalue.c | 28 ++++++++++++++++++++++++++++ gtk/gtkcssstringvalueprivate.h | 3 +++ 2 files changed, 31 insertions(+) diff --git a/gtk/gtkcssstringvalue.c b/gtk/gtkcssstringvalue.c index c12eb7661b..ad29def9a1 100644 --- a/gtk/gtkcssstringvalue.c +++ b/gtk/gtkcssstringvalue.c @@ -203,6 +203,34 @@ _gtk_css_ident_value_try_parse (GtkCssParser *parser) return _gtk_css_ident_value_new_take (ident); } +GtkCssValue * +_gtk_css_ident_value_try (GtkCssParser *parser, + const char *ident, + ...) +{ + va_list args; + const char *name; + GtkCssValue *value = NULL; + + name = ident; + + va_start (args, ident); + + while (name) + { + if (_gtk_css_parser_try (parser, name, TRUE)) + { + value = _gtk_css_ident_value_new (name); + break; + } + ident = va_arg (args, const char *); + } + + va_end (args); + + return value; +} + const char * _gtk_css_ident_value_get (const GtkCssValue *value) { diff --git a/gtk/gtkcssstringvalueprivate.h b/gtk/gtkcssstringvalueprivate.h index 5fb703b6e3..0aaa9ec8af 100644 --- a/gtk/gtkcssstringvalueprivate.h +++ b/gtk/gtkcssstringvalueprivate.h @@ -29,6 +29,9 @@ G_BEGIN_DECLS GtkCssValue * _gtk_css_ident_value_new (const char *ident); GtkCssValue * _gtk_css_ident_value_new_take (char *ident); GtkCssValue * _gtk_css_ident_value_try_parse (GtkCssParser *parser); +GtkCssValue * _gtk_css_ident_value_try (GtkCssParser *parser, + const char *ident, + ...); const char * _gtk_css_ident_value_get (const GtkCssValue *ident); -- 2.30.2